Skip to content

Conversation

@danielinux
Copy link
Member

Name Configuration Bootloader size Stack size Image header size Application size Boot time
SHA2 only SIGN=NONE 10600 1216 1024 103096 55.662 ms
SHA384 only SIGN=NONE HASH=SHA384 20120 3760 1024 103096 98.213 ms
SHA3 only SIGN=NONE HASH=SHA3 10264 1216 1024 103096 159.116 ms
SHA2 only,small SIGN=NONE NO_ASM=1 7144 1216 1024 103096 64.379 ms
rsa2048 SIGN=RSA2048 17316 17568 1024 103984 69.844 ms
rsa3072 SIGN=RSA3072 17452 12288 1024 104112 85.834 ms
rsa4096 SIGN=RSA4096 17612 18064 1024 104240 108.302 ms
rsa4096 with sha384 SIGN=RSA4096 HASH=SHA384 27304 18064 1024 104240 154.711 ms
ecdsa256 SIGN=ECC256 24784 7632 1024 103720 75.611 ms
ecdsa384 SIGN=ECC384 25656 11216 1024 103752 297.082 ms
ecdsa521 SIGN=ECC521 29292 8480 1024 103788 404.038 ms
ecdsa256 with small stack SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 25208 5880 1024 103752 295.158 ms
ecdsa256 with fast math SIGN=ECC384 SP_MATH=0 25656 11216 1024 103752 297.073 ms
ecdsa256, no asm SIGN=ECC256 NO_ASM=1 16084 7632 1024 103720 352.741 ms
ecdsa384, no asm SIGN=ECC384 NO_ASM=1 17436 11216 1024 103752 954.500 ms
ecdsa521, no asm SIGN=ECC521 NO_ASM=1 16376 8480 1024 103788 1960.132 ms
ecdsa384 with sha384 SIGN=ECC384 HASH=SHA384 35176 11216 1024 103752 338.830 ms
ed25519 with sha384, small SIGN=ED25519 HASH=SHA384 NO_ASM=1 12860 5000 1024 103688 1580.776 ms
ed25519 fast SIGN=ED25519 NO_ASM=0 29664 5000 1024 103688 1589.512 ms
ed448 SIGN=ED448 19576 4578 1024 103716 5793.993 ms
ML_DSA-44 SIGN=ML_DSA ML_DSA_LEVEL=2 IMAGE_SIGNATURE_SIZE=2420 IMAGE_HEADER_SIZE=8192 21524 25000 8192 104984 82.791 ms
ML_DSA-65 SIGN=ML_DSA ML_DSA_LEVEL=3 IMAGE_SIGNATURE_SIZE=3309 IMAGE_HEADER_SIZE=8192 22164 25000 8192 105624 99.279 ms
ML_DSA-87 SIGN=ML_DSA ML_DSA_LEVEL=5 IMAGE_SIGNATURE_SIZE=4627 IMAGE_HEADER_SIZE=12288 22804 25000 12288 106264 127.807 ms
LMS 1-10-8 SIGN=LMS LMS_LEVELS=1 LMS_HEIGHT=10 LMS_WINTERNITZ=8 IMAGE_HEADER_SIZE=4096 IMAGE_SIGNATURE_SIZE=1456 13416 1320 4096 103716 207.703 ms
XMSS-SHA2_10_256' XMSS_PARAMS=XMSS-SHA2_10_256 SIGN=XMSS IMAGE_SIGNATURE_SIZE=2500 IMAGE_HEADER_SIZE=8192 14236 9352 8192 103724 189.553 ms
ML_DSA-65 hybrid with ECDSA384 SIGN=ML_DSA ML_DSA_LEVEL=3 IMAGE_SIGNATURE_SIZE=3309 IMAGE_HEADER_SIZE=8192 SIGN_SECONDARY=ECC384 WOLFBOOT_UNIVERSAL_KEYSTORE=1 38820 25000 8192 107592 341.706 ms
ML_DSA-87 hybrid with ECDSA521 SIGN=ML_DSA ML_DSA_LEVEL=5 IMAGE_SIGNATURE_SIZE=4627 IMAGE_HEADER_SIZE=12288 SIGN_SECONDARY=ECC521 WOLFBOOT_UNIVERSAL_KEYSTORE=1 43700 25000 12288 108872 477.560 ms

@danielinux danielinux requested review from Copilot and dgarske and removed request for Copilot February 9, 2026 17:49
Copilot AI review requested due to automatic review settings February 11, 2026 10:54
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the benchmarking and emulation tooling to support running boot-time benchmarks from a Raspberry Pi against an STM32H5/H563 target, plus associated build/config tweaks to enable consistent timing and sizing measurements.

Changes:

  • Add a new libgpiod-based boot-time measurement script and switch the benchmark runner to OpenOCD + GPIO edge timing.
  • Introduce build flags (WOLFBOOT_TEST_FILLER, WOLFBOOT_TIME_TEST) and early-boot GPIO toggling to support boot-time measurements.
  • Adjust emulation linker templates and config-generation flow for multiple targets (STM32*, nRF, MCX).

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tools/scripts/boot-time.py New GPIO edge-timestamp based boot-time measurement script (libgpiod).
tools/scripts/benchmark.sh Switch benchmark flashing to OpenOCD and delegate timing to boot-time.py; add “Application size” column.
tools/check_config/Makefile Adds CROSS_COMPILE/CC support for building check_config.
test-app/startup_arm.c Calls an early boot-time pin toggle for STM32H5 when WOLFBOOT_TIME_TEST is enabled.
test-app/emu-test-apps/test.sh Updates how target.h is generated and how check_config is built; adds per-emu linker template support.
test-app/emu-test-apps/stm32u585/target.ld.in Fix RAM region definition for emulation linker script.
test-app/emu-test-apps/stm32l552/target.ld.in Fix RAM region definition for emulation linker script.
test-app/emu-test-apps/stm32h563/target_v8.ld Fix RAM region definition for emulation linker script.
test-app/emu-test-apps/stm32h563/target.ld.in Fix RAM region definition for emulation linker script.
test-app/emu-test-apps/nrf5340/target.ld.in Fix RAM region definition for emulation linker script.
test-app/emu-test-apps/mcxw71/target.ld.in Fix RAM region definition for emulation linker script.
test-app/app_stm32h7.c Make filler data optional behind WOLFBOOT_TEST_FILLER.
test-app/app_stm32h5.c Gate keystore usage when signing is disabled; add early boot-time GPIO toggle; optional filler.
test-app/Makefile Avoid linking keystore objects into test-app when SIGN=NONE.
test-app/ARM-stm32h5.ld Increase RAM size in linker script template.
test-app/ARM-stm32h5-ns.ld Increase RAM size in non-secure linker script template.
src/image.c Silence unused stored_secondary_signature_size.
options.mk Add build flags for timing/filler; adjust ECC521 stack usage number.
include/image.h Add an extra compare_res; statement inside RSA verification macro.
config/examples/stm32h5-no-tz.config New STM32H5 no-TrustZone example config used by benchmark script.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@danielinux danielinux requested a review from dgarske February 11, 2026 12:58
@dgarske dgarske merged commit 25bee84 into wolfSSL:master Feb 11, 2026
502 of 505 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants